package com.gagakuai.transport.channel;

import com.gagakuai.utils.concurrent.GenericFutureListener;

/*
 * @description: 监听器
 * /*
 *   * 监听 {@link ChannelFuture} 的结果。 结果
 *   * 一旦这个监听器被通知，异步{@link Channel} I/O操作就会被通知
 *   * 通过调用 {@link ChannelFuture#addListener(GenericFutureListener)} 添加。
 *   *
 *   * <h3>快速将控制权返回给调用者</h3>
 *   *
 *   * {@link #operationComplete(Future)} 由 I/O 直接调用
 *   * 线。 因此，执行耗时任务或阻塞操作
 *   * 在处理程序方法中可能会导致 I/O 期间意外暂停。 如果你需要
 *   * 要在 I/O 完成时执行阻塞操作，请尝试执行
 *   * 使用线程池在不同的线程中操作。
 *
 *
 *
 * @author: houhong
 * @create: 2024-03-30 11:02
 */
public interface ChannelFutureListener extends GenericFutureListener<ChannelFuture> {


    ChannelFutureListener CLOSE_ON_FAILURE = future -> {


        if (!future.isSuccess()) {

            future.channel().pipeline().fireExceptionCaught(future.cause());
        }
    };
}
